<!--
 * @Description: 
 * @Author: dh
 * @Date: 2021-09-15 10:32:03
 * @LastEditors: dh
 * @LastEditTime: 2021-09-15 11:18:04
-->
<!doctype html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>3、实例继承</title>
	</head>
	<!-- 
            核心：为父类实例添加新特性，作为子类实例返回 

            特点：
            1.不限制调用方式，不管是new 子类()还是子类(),返回的对象具有相同的效果

            缺点：
            1.实例是父类的实例，不是子类的实例
            2.不支持多继承
 -->

	<body>
		<script>
			function Animal(name) {
				this.name = name || 'Animal';
				this.sleep = function () {
					console.log(this.name + '正在睡觉！');
				};
			}
			// 原型方法
			Animal.prototype.eat = function (food) {
				console.log(this.name + '正在吃：' + food);
			};

			function Cat(name = 'Tom') {
				var instance = new Animal();
				instance.name = name;
				return instance;
			}

			var cat = new Cat();
			console.log(cat.name);
			console.log(cat.sleep());
			console.log(cat instanceof Animal); // true
			console.log(cat instanceof Cat); // false
		</script>
	</body>
</html>
